package org.com.structuralPattern.bridgePattern;

/**
 * @author Jonny
 * @version 1.0
 * @Description:
 * @date 2021/4/15 14:20
 */

/**
 *
 * 桥梁模式
 * ■ 抽象和实现分离是桥梁模式的主要特点，是为了解决继承的缺点而提出的设计模式。在该模式下，
 *      实现可以不受抽象的约束，不用绑定在一个固定的抽象层次上。
 * ■ 实现对客户透明，客户端不用关心细节的实现，它已经由抽象层通过聚合关系完成了封装。
 * ■ 提高灵活性和扩展性。
 *
 * ■ 如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性，避免在两个层次之间建立静态的联系。
 * ■ 设计要求实现化角色的任何改变不应当影响客户端，或者说实现化角色的改变对客户端是完全透明的。
 * ■ 一个构件有多于一个的抽象化角色和实现化角色，系统需要它们之间进行动态耦合。
 * ■ 不希望或不适合使用继承的场合。继承具有强入侵性质，即父类有的方法，子类必须有；而桥梁模式是弱关联关系。
 * 因此对于比较明确不发生变化的，则可以通过继承完成；若不能确定是否会发生变化，则通过桥梁模式来解决。
 *
 */

public class Test {
    public static void main(String[] args) {
        Color color=new Green();
        AbstractShape space=new Square(color);
        space.draw();

        color=new Red();
        space=new Circle(color);
        space.draw();
    }
}
